package cn.hallele.leinsteining.ms.infrastructure.plugin.captcha.properties;

import cn.hallele.leinsteining.ms.infrastructure.plugin.captcha.enums.CaptchaCodeEnum;
import cn.hallele.leinsteining.ms.infrastructure.plugin.captcha.enums.CaptchaStyleEnum;
import lombok.Data;

/**
 * 图形码配置
 *
 * @author anle5
 * @since 2024/7/28 15:20
 */
@Data
public class CaptchaProperties {
    /**
     * 验证码风格  circle-圆圈干扰验证码|gif-Gif验证码|line-干扰线验证码|shear-扭曲干扰验证码
     */
    private CaptchaStyleEnum style = CaptchaStyleEnum.CIRCLE;

    /**
     * 验证码图片宽度
     */
    private int width = 120;

    /**
     * 验证码图片高度
     */
    private int height = 40;

    /**
     * 干扰线数量
     */
    private int interfereCount = 3;

    /**
     * 文本透明度(0.0-1.0)
     */
    private float textAlpha = 0.8f;

    /**
     * 验证码有效期(秒)
     */
    private long expireSeconds = 60;

    /**
     * 验证码字符配置
     */
    private CodeProperties code;

    /**
     * 验证码字体
     */
    private FontProperties font;


    /**
     * 验证码字符配置
     */
    @Data
    public static class CodeProperties {
        /**
         * 验证码字符类型 math-算术|random-随机字符串
         */
        private CaptchaCodeEnum type;

        /**
         * 验证码字符长度，type=算术时，表示运算位数(1:个位数 2:十位数)；type=随机字符时，表示字符个数
         */
        private int length;
    }

    /**
     * 验证码字体配置
     */
    @Data
    public static class FontProperties {
        /**
         * 字体名称 Dialog|DialogInput|Monospaced|Serif|SansSerif
         */
        private String name;

        /**
         * 字体大小
         */
        private int size;
    }
}
